package ar.pmt.persistencia;

import java.util.Collection;

import ar.pmt.modelo.beans.PersistenceObject;

/**
 * @author mparissi
 * Clase que contiene los metodos primitivos de los DAO
 * @param <Obj> 
 */
public interface ManagerDAO<Obj extends PersistenceObject> {

	/**
	 * @param po Objeto a insertar
	 * @throws Exception manejda por aspecto
	 */
	void crear(Obj po) throws Exception;
	
	/**
	 * @param po Objeto a actualizar
	 * @throws Exception manejada por aspecto
	 */
	void actualizar(Obj po) throws Exception;
	
	/**
	 * @param po Objeto a elimiar
	 * @throws Exception manejada por aspecto
	 */
	void eliminar(Obj po) throws Exception;
	
	/**
	 * @param id Id de objeto a obtener
	 * @return Objeto con determinado id
	 * @throws Exception manejada por aspecto
	 */
	Obj obtenerPorId(Integer id) throws Exception;
	
	/**
	 * @return Obtiene todos los objetos
	 * @throws Exception manejada por aspecto
	 */
	Collection<Obj> obtenerTodos() throws Exception;
}
